<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // <!-- 首先new关键字执行一个构造函数，然后创建一个实例对象 执行构造函数指定this指向 给实例对象添加原型对象 最后返回这个对象-->
        // 1.创建一个空对象
        // 2.this指向这个空对象
        // 3.对象的原型指向函数的原型
        // 4.隐式返还这个对象 ，返还this
        function mynew(name, age) {
            var obj = {}; // 开辟一个新空间
            var res = Person.call(obj, name, age); // 确定this指向
            obj.__proto__ = Person.prototype; // 对象原型指向函数原型
            // 如果没有返还，那么就返还this 也就是这个对象 。 如果有返还就返还用户返还的值
            if (typeof res == "undefined") {
                return obj;
            } else {
                return res;
            }
        }
        function Person(name,age){
            this.name = name;
            this.age = age;
            return {
                name:"123"
            }
        }
    </script>
</body>
</html>